Method, system and apparatus for managing computer processes

ABSTRACT

Methods, systems and apparatuses for managing computer processes in a computing environment may be described. An exemplary method may include the defining of a plurality of computer processes; the defining of a sequence that dictates the starting and stopping of the plurality of computer processes; the Defining of any process dependencies for the plurality of computer processes; the defining of a first networked environment where the plurality of computer processes run; the determining of an action to take following a system event; and the executing of the action.

BACKGROUND

Software applications can include a number of processes that may run ina distributed architecture. Methods of managing software applications,however, are often disjointed and require administrators to carry out anumber of tasks, such as running commands or scripts, on a number ofdevices, often in a coordinated sequence. Additionally, the manualmanagement of processes can be cumbersome and time or cost prohibitive,requiring an individual or team to monitor, coordinate and maintain theapplications on a near constant basis. As a result, and due to a varietyof factors, there are often situations involving system unavailabilityand errors can be made.

One known environment uses a monitoring system for notification andrelies on a combination of operation documentation, specialized scriptsfor specific remediation steps and a variety of trained personnel forapplication management. However, this approach often takes a significantamount of time to set up and requires near-constant monitoring whilealso being prone to errors.

Still other known environments utilize clustered solutions to automatefailover of a specific component of an application, for example adatabase. These environments typically support a specific process acrosstwo or more closely coupled servers, but they do not include advancedbusiness rules for managing the multitude of processes that comprise thetotality of an application. Additionally, these solutions are oftenoverly complex and cost prohibitive, in addition to being limited to oneoperating system at a single physical location.

Another problem commonly faced in computing environments is disasterrecovery. Disaster recovery, or the recovery of data and systemsfollowing a complete failure or extended outage, typically is expensiveto set up and may need a number of technicians to implement and supportvarious complex elements. For example, operation support often involvesa combination of standard monitoring systems and detailed failover andtest plans. The failover steps themselves are often manual or leveragebasic automation for specific functions. However, performing failoveror, alternatively, failback, can be time consuming and may introducerisk as it is challenging to perform routine tests.

SUMMARY

Methods, systems and apparatuses for managing computer processes in acomputing environment may be described. An exemplary method may includethe defining of a plurality of computer processes; the defining of asequence that dictates the starting and stopping of the plurality ofcomputer processes; the Defining of any process dependencies for theplurality of computer processes; the defining of a first networkedenvironment where the plurality of computer processes run; thedetermining of an action to take following a system event; and theexecuting of the action.

An exemplary system for managing computing processes can have anetworked computing environment; at least a first computer processserver hosting at least one computer process; a management appliancecommunicatively coupled to the networked computing environment; and theat least first computer process server and controlling the running ofthe at least one computer process on the at least first computer processserver.

An exemplary system for managing a computing environment may alsoinclude means for hosting any number of computer processes; means fornetworking any number of computer processes hosted on any number ofcomputers; and means for managing the computer processes.

BRIEF DESCRIPTION OF THE FIGURES

Advantages of embodiments of the present invention will be apparent fromthe following detailed description of the exemplary embodiments thereof,which description should be considered in conjunction with theaccompanying drawings in which:

FIG. 1 is an exemplary view of a computing environment and a managingappliance.

FIG. 2 is an exemplary flow chart showing steps for generating anappliance.

FIG. 3 is an exemplary view of a computing environment followingmultiple system events.

FIG. 4 is an exemplary diagram showing multiple computing environments.

FIG. 5 is an exemplary flow chart showing steps for managing a computingenvironment.

DETAILED DESCRIPTION

Aspects of the invention are disclosed in the following description andrelated drawings directed to specific embodiments of the invention.Alternate embodiments may be devised without departing from the spiritor the scope of the invention. Additionally, well-known elements ofexemplary embodiments of the invention will not be described in detailor will be omitted so as not to obscure the relevant details of theinvention. Further, to facilitate an understanding of the description,discussion of several terms used herein follows.

The word “exemplary” is used herein to mean “serving as an example,instance, or illustration.” Any embodiment described herein as“exemplary” is not necessarily to be construed as preferred oradvantageous over other embodiments. Likewise, the terms “embodiment(s)of the invention,” “alternative embodiment(s),” and “exemplaryembodiment(s)” do not require that all embodiments of the inventioninclude the discussed feature, advantage or mode of operation.

Further, many embodiments are described in terms of sequences of actionsto be performed by, for example, elements of a computing device. It willbe recognized that various actions described herein can be performed byspecific circuits (e.g., application specific integrated circuits(ASICs)), by program instructions being executed by one or moreprocessors, or by a combination of both. Additionally, these sequence ofactions described herein can be considered to be embodied entirelywithin any form of computer readable storage medium having storedtherein a corresponding set of computer instructions that upon executionwould cause an associated processor to perform the functionalitydescribed herein. Thus, the various aspects of the invention may beembodied in a number of different forms, all of which have beencontemplated to be within the scope of the claimed subject matter. Inaddition, for each of the embodiments described herein, thecorresponding form of any such embodiments may be described herein as,for example, “logic configured to” perform the described action.

Additionally, some exemplary embodiments include network adapters thatmay also be coupled to the system to enable the data processing systemto become coupled to other data processing systems or remote printers orstorage devices through intervening private or public networks. Modems,cable modems and Ethernet cards are just a few of the currentlyavailable types of network adapters.

Also, exemplary embodiments may include or incorporate a database whichmay store software, descriptive data, system data, digital images andany other data item required by the other components necessary toeffectuate any embodiment of the present system and method known to onehaving ordinary skill in the art. Any database may be provided, forexample, as a database management system (DBMS), a relational databasemanagement system (e.g., DB2, ACCESS, etc.), an object-oriented databasemanagement system (ODBMS), a file system or another conventionaldatabase package as a few non-limiting examples. The databases can beaccessed via a Structure Query Language (SQL) or other tools known toone having skill in the art.

Exemplary embodiments of methods and systems for managing computerprocesses may be described herein. Some exemplary embodiments mayinclude configuration and management of processes, procedures, files,networks and other components for computing applications spread amongstdistributed heterogeneous environments. Still further exemplaryembodiments may include provisioning and managing application processesacross a computer network, for example including accounting fordependencies that are local or in other network locations and which mayoccur remotely and automatically, for example, when utilizing aconfigurable set of rules or guidelines. In some further examples, anexecution of a step in a process may be configured to be dependent onthe completion of an earlier or previously executed or perform step orinstruction. The process may further be generic insofar as it may beable to support any type of computer application that may run on anytype of computer, any type of operating system or any type of computingenvironment. Any or all of these processes, steps and applications, aswell as any set or grouping thereof, may be managed through the use ofan appliance that may be remotely located on any type of machine and maybe implemented in any of a variety of manners, as discussed herein.

Referring now to FIG. 1, an exemplary environment for managing computerprocesses may be shown. The method and system may include any number ofapplications, which can be a grouping of processes and data to perform adesired function, such as a business function, or any relatedconfigurations. Further, any number of implementations may be utilized.An implementation may be a specific instantiation of an application andwhich may be unique or custom or which may be copied or derived from atemplate, as described further below. The method and system may includeenvironment 100. Environment 100 can include any number of computingdevices that may be used to run processes for an implementation at asite. Environments, such as environment 100, can include a primaryenvironment and any number of alternative environments, for example adisaster recovery environment. Environment 100 may be seen as a primaryenvironment in this example.

As mentioned above, environment 100 may include any number andcombination of computing devices, such as storage area network 102,multiple servers 104, 106, 108, 110, 112 and 114 and appliance 116.Further, storage area network 102 may include any type of database anddatabase management system. Similarly, servers 104 and 106 may alsoinclude any type of database and database management system, for examplethe same type that is used with storage area network 102. Additionally,appliance 116 may also include any type of database and databasemanagement system and, depending on the situation, may or may not be thesame type of database management system as that utilized by storage areanetwork 102. Additionally, storage area network 102 and appliance 116may utilize different database management systems. For example, in oneembodiment storage area network may use an Oracle database managementsystem while appliance 116 may use a MySQL database management system.This environment is only a representative, non-limiting example,however, and different environment layouts, orientations and equipmentare envisioned.

Servers 104, 106, 108, 110, 112 and 114, along with any other desiredservers or other computing devices, may include any functionality, suchas the ability to run software or processes. For example, servers 104and 106 may include any database management system (DBMS), for exampleDBMS 103. DBMS 103 may be configured on both servers 104 and 106, andany other desired server, depending on the configuration orimplementation of environment 100. Also, regardless of where DBMS 103 isconfigured, DBMS 103 may provide similar functionality and may beconfigured to run a shared database, for example via a SAN, such asstorage area network 102, or any other type of data replication orsharing capability, and may also be run or based off of differentsoftware or platforms. For example, server 108 may run RedHat Linux,server 110 may run SUSE Linux and servers 112 and 114 may run WindowsNT. These operating systems are only exemplary, however, and any servermay run any desired operating system or other software, and combinationof servers may run any combination of operating systems or othersoftware.

Additionally, each server 108, 110, 112 and 114, as well as any numberof other servers or computers that may be associated with environment100, may run any number of any processes on any number of hosts. In theexemplary embodiment shown in FIG. 1, server 108 may run five processes,for example with process 1 being C++, process 2 being Perl, process 3being Java, process 4 being C++ and process 5 being Java. Thus, any typeof process, for example, but not limited to those recited before, aswell as any other type of computer processes, configurations, forexample ACL, or procedures, for example DNS, may be run on anyappropriate server and may be managed by appliance 116. Servers 110, 112and 114 may run a similar set of processes, however each server may runany number of processes and any type of processes, such as C++, Java,Perl, .NET and Apache, as well as any other desired type of process, asshown in exemplary FIG. 1. Additionally, one or more of the servers maybe running and any number, for example zero or more, of the processesmay be running on a server, such as a primary server. However, anyprocess may be run on any server, depending on a system event or userrequest, for example. In exemplary FIG. 1, server 104 may be runningDBMS 103 while any process running on server 106 may be down, asindicated by the dotted lines of DBMS 103 on server 106. Similarly,server 108 may be running processes 1-3, while processes 4-5 may be down(as indicated by the dotted lines surrounding them); server 110 may berunning processes 4-5, while processes 1-3 may be down (as indicated bythe dotted lines surrounding them), server 112 may be running process 6,while processes 7-8 may be down (as indicated by the dotted linessurrounding them); and server 114 may be running processes 7-8, whileprocess 6 may be down (as indicated by the dotted lines surrounding it).As discussed in more detail below, however, any process may be run onany server as requested by a user, as desired as a result of a systemevent, user action or as otherwise managed through appliance 116.

Appliance 116 may also be known as an application manager appliance andmay include any of a variety of components and have a variety offunctionality. Appliance 116, in some examples, may include software,one or more databases and one or more processes. Additionally, appliance116 may be housed on a dedicated server or may be housed on any sharedserver, such as, but not limited to, a highly available server, or aremote server, for example to support software as a service or as aseparate network. In still further examples, appliance 116 can include adata repository. The data repository may act to store consolidatedconfiguration data, log data and any other type of data for one or manyenvironments. The data repository may be a database management system orany other mechanism or component that is capable of storing, maintainingand retrieving data.

Appliance 116 may also include an application management (AM) agent. TheAM agent may be a central controller for the appliance 116 insofar as itmay manage any implementation or implementations. In some exemplaryembodiments, the AM agent may read the configuration of eachimplementation and may coordinate actions with another agent, such as across-platform management agent (CM Agent), based on system events, userrequests or any other criteria. CM agents may be sets of cross-platformprocesses, scripts and/or procedures for local processing and may takedirection from a central AM agent. Thus, in the exemplary embodimentshown in FIG. 1, server 104, server 106, server 108, server 110, server112 and server 114 may each include CM agents, for example CM agents105, 107, 109, 111, 113 and 115, respectively. Additionally, appliance116 can have a user interface. The user interface may be any type ofinterface, such as, but not limited to, a website, a command line andthe like. Through the user interface, users can maintain a desiredconfiguration, request an action, check the status of any desiredenvironment and/or generate reports on any desired function or aspect ofthe method or system, as described in more detail below. Additionally,the interface may allow a user of appliance 116 to see a holistic viewof the status of any implementations or locations of any processes beingrun in environment 100. Further, with respect to FIG. 1 and allexemplary embodiments described herein, environment 100 may include anydesired amount of computing devices and processes which may be managedby appliance 116. For example, some environments may only have a singleserver and an appliance which may be connected to the server through anyof a variety of manners.

Appliance 116 may be set up for an implementation of an application inany of a variety of manners. One methodology, as shown in exemplary FIG.2, can include any of a variety of steps to set up and implement. Forexample, in step 202, appliance 116 may be installed in any location,for example on a server, as described previously. Next, in step 204, CMagents may be installed and started on any or all servers in theimplementation that may be managed by appliance 116. Then, in step 206,one or more implementations may be generated or an existing template ortemplates for an implementation or implementations may be copied ormodified. Also, in step 206 and as further shown below and with respectto FIG. 5, any processes and dependencies, as well as any computingdevices and related properties, associated with the implementation anduse of appliance 116 may be further defined. Then, in step 208, varioustest scenarios may be run or executed so as to verify a desiredoperation of the appliance. Additionally, tests conducted in step 208may include any of a variety of manners for monitoring, defining andmanaging any of the processes or components discussed herein. Further,at any time during a test scenario or following the completion of a testscenario, step 206 may be repeated, allowing for the testing of anynumber of implementations.

In further exemplary embodiments, appliance 116, along with anyinterface or controls associated therewith, may be used to facilitateany desired activities in a computing environment, such as environment100 in FIG. 1. For example, appliance 116 may be used to conductmaintenance activities such as, but not limited to, hardwarereplacement, operating system and/or application upgrades, and themanagement of network outages. Thus, appliance 116 may be used for anyoperation where processes may need to be started, stopped or moved in ascheduled or coordinated manner and may be capable of performing anytasks through the use of operating system commands, system calls,scripts, network calls and the like.

Additionally, appliance 116 may be used to provide any type ofvisibility into a status of one or more applications and may process alocation or locations for implementations and/or environments. Forexample, a user of appliance 116 may be able to see a high level statusof any applications or implementations. Any high level status may thenbe broken down into any desired and available detail of any aspect orprocess.

Referring back to FIG. 1, an exemplary implementation of a method andsystem for managing computer processes may be shown as a multi-tiered,highly available distributed heterogeneous environment. In this exampleserver 104 and server 106 may be connected to storage area network (SAN)102. The connection of server 104 and server 106 to storage area network102 may allow for database availability if a designated primary server(e.g. server 104) were to cease properly functioning. Server 108, server110, server 112 and server 114 may each host different processes thatmay all be run on server 108, server 110, server 112 or server 114. Asdescribed previously, some servers may host substantially similarprocesses and appliance 116 may allow for the designation of differentservers to run different processes.

Still referring to FIG. 1, and in one exemplary operation of the methodand system, three processes, for example process 1, process 2 andprocess 3, may be running on server 108 and two processes, for exampleprocess 4 and process 5, may be running on server 110, which may allowfor the maximization of system resources. However, in other exemplaryembodiments, the distribution of processes running on server 108 andserver 110 may be any desired distribution and may include the runningon processes on yet another server. Additionally, in some exemplaryembodiments, server 108 and server 110 may run on different versions ofoperating systems, for example RedHat 4 and RedHat 5, or differentoperating systems, for example RedHat Linux on server 108 and SUSE Linuxon server 110, or any other type or combination of operating systems.Thus, appliance 116 is able to control any desired number of processesrunning across two or more separate or unique platforms or operatingsystems. For example, server 112 and server 114 may each house anyfurther desired processes, for example processes 6-8, and each may runon separate operating systems, such as Windows NT or any other availableoperating system.

An exemplary sample environment, such as that shown in FIG. 1, caninclude a variety of configuration rules that may govern the actions ofappliance 116. As shown in exemplary Table 1 below, an exemplary processstarting and stopping sequence may be used to provide protocol forstarting and stopping processes. Any of a variety of factors maycontribute to the starting and stopping of processes, however.

TABLE 1 Start Sequence Stop Sequence DBMS 103 Proc 8 Proc 1 Proc 6 Proc2 Proc 7 Proc 3 Proc 3 Proc 4 Proc 5 Proc 5 Proc 4 Proc 6 Proc 2 Proc 7Proc 1 Proc 8 DBMS 103

Exemplary Table 2 shows sample process dependencies or a processhierarchy. That is, in some exemplary embodiments, if the parent processis not active, then the dependent process may also not be active.

TABLE 2 Parent Process Dependent processes DBMS 103 Proc 1, Proc 2, Proc3, Proc 4, Proc 7 Proc 1 Proc 2, Proc 7 Proc 2 Proc 3, Proc 4 Proc 4Proc 6, Proc 7 Proc 6 Proc 7Further, the exemplary parent and dependent processes shown in Table 2below may be configured or customized in any of a variety of manners.For example, a dependent process may be configured or customized to stopwhen a parent process stops, to stop when a parent process crashes, tostart when a parent process starts, to run on the same server as aparent process, to run on a different server than a parent process, torequire a parent process to be running in order to run and/or to restartwhen a parent process restarts. Additionally, any configurations andcustomizations could be generated or managed at a parent level or at adependent process level so as to allow for granularity for any scenario.

Exemplary Table 3 shows a sample listing of primary site serverpriorities. In some exemplary embodiments, a process may have a primaryserver to which it is associated. However, as a potential manner ofproviding continuity of service, data or information, each process mayhave a secondary, tertiary, etc. server to which each is associated.Thus, if a primary or secondary server should go down or otherwise ceaseto function properly, the process may continue to run or otherwiseremain active on another server. Additionally, processes may beconfigured to run more than once on a given server or simultaneously onmore than one server. Further, any process may be known to more than oneimplementation, for example, so that more than one group of processescan share the same database. Also, although the location of a database,process or any other implementation in environment 100 may change from aprimary to a secondary (or tertiary, etc.) location, the content oreffect of the database, process or any other implementation may besubstantially the same as it was on the primary location.

TABLE 3 Process Primary, Secondary, Tertiary, etc DBMS 103 Server 104,Server 106 Proc 1 Server 108, Server 110 Proc 2 Server 108, Server 110Proc 3 Server 108, Server 110 Proc 4 Server 110, Server 108 Proc 5Server 110, Server 108 Proc 6 Server 112, Server 114 Proc 7 Server 114,Server 112 Proc 8 Server 114, Server 112

Taking into account the exemplary values and conditions set forth inTables 1-3, a variety of exemplary scenarios may be utilized todemonstrate a method and system for managing computer processes so thatall desired processes may continue to run following the occurrence of asystem event. For example, in a first exemplary scenario, a system eventoccurs whereby process 2 stops. The appliance can determine that thesystem event has happened and may interpret this information. In lookingat the exemplary tables above, process 2 is the parent process ofprocess 3 and process 4. Additionally, process 4 is the parent processof process 6 and process 7. Further, process 6 is the parent process ofprocess 7. Therefore, if process 2 stops, process 6 and process 7 willstop, as well as process 3 and process 4. Then, to have all of theaffected processes begin running properly again, process 2 is started onserver 3, if process 2 fails to start it could then be started on server4, process 3 and process 4 may be restarted, as well as process 6 andprocess 7. Following these exemplary steps after a system event whereprocess 2 stops can result in all processing running in normalconfiguration.

In another exemplary scenario, and in building on the above scenario, auser may request, for example using a user interface or command line orany other available manner, to move the database management system froma first server (e.g. server 104) to a second server (e.g. server 106).In reviewing Tables 1-3 after such a user request, process 6, process 7,process 3, process 4, process 2, process 1 and DBMS 103 would all bestopped as each process is dependent on DBMS 103 on server 104. ThenDBMS 103 could be started on the second server, server 106, effectivelymoving DBMS 103 from the server 104 to server 106. Next, process 1,process 2, process 3, process 4, process 6 and process 7 could bestarted and would again be running on the primary server to which theyare associated (according to exemplary Table 3) or where they had beenpreviously running (if configured to do so).

In yet a further exemplary scenario that builds on the previousscenario, a server may crash and become unavailable, for example server110. Here, it can be seen that server 110 is the primary server forprocess 4 and process 5. Therefore, process 4 will have stopped runningand may need to stop any dependent processes (whereas process 5 does nothave any dependent processes in this example). Then, it may further beseen that process 4 is the parent process to process 6 and process 7;thus, process 6 and process 7 may need to be stopped. Then, in order toenable all of the processes to return to their running status andexclude server 110, process 4 and process 5 may be restarted on theirsecondary server, which is shown as server 108 in this example scenario.Then, as discussed previously, process 6 and process 7 will need to bestarted as they are dependent on process 4. However, because process 6and process 7 run on server 112 and server 114, respectively, they maybe started on their primary servers as their primary servers were notaffected by the crashing of server 110. Thus, as a result of thesesteps, the DBMS 103 may remain running on server 106, processes 1-5 mayremain running on server 108, process 6 may remain running on server 112and process 7 and 8 may remain running on server 114.

The results of these three scenarios may be seen in exemplary FIG. 3, ascompared with the original exemplary environment shown in FIG. 1. As canbe seen, the DBMS 103 is now running on server 106, and DBMS 103 onserver 104 is shown as being offline. Also, server 110 is now shown asbeing offline, as indicated by the broken line surrounding server 110,and the processes previously running in server 110 are all shown asdown, while the processes that were formerly being run on server 110 arenow shown as running on server 108, for example shown by the solid linessurrounding process 4 and process 5 on server 108.

In another exemplary embodiment and as seen in exemplary FIG. 4, asecondary computing environment may be associated with a primarycomputing environment. For example, a secondary environment 400 may be adisaster recovery environment that allows for the continuity of theprocesses in the event of any type of failure of environment 100. Inthis example, there may be data replication between storage area network102 and storage area network 402. The data replication may take any of avariety of forms, for example replication through a storage area networkor through database replication. Further, a user of environment 100 orenvironment 400 could switch to an alternative environment through theuse of controls in appliance 116 and appliance 410, respectively.Additionally, appliance 116 and appliance 410 may also be able to managedata replication and switches between environments, for example throughdomain name server changes.

In the example shown in FIG. 4, it may also be shown that a secondaryenvironment may have a different configuration than a primaryenvironment. In this example, environment 400 includes storage areanetwork 402, server 404, server 406, server 408 and appliance 410, aswell as CM agents 405, 407 and 409. Also, DBMS 103 may be configured onserver 404, similar to how DBMS may be configured on servers 104 and106. Additionally, each environment may have its own server-to-processallocation table, similar to that depicted in Table 3, with respect toenvironment 100. Further, environment 400 may be such that any or allelements and processes may either be down or in a standby state until itis desired that any or all elements or processes become active. This maybe seen in FIG. 4 through the broken line surrounding environment 400.

In another exemplary embodiment, and as shown in exemplary FIG. 5 amethod of defining a configuration of processes and/or procedures formonitoring, managing and/or controlling an application may be described.For each of these steps, any environment on which the processes may behosted and run may be utilized. For example, as shown in step 502, oneor more processes and the methods by which to create, status, start,stop and/or manage may be defined. Next, in 504, a sequence in which tostart and stop processes in a controlled manner may be defined. Then, in506, process dependencies may be defined, and which may allow for thedetermination of an appropriate action or action to take place. In someexemplary embodiments, the appropriate action or actions to take placemay be dictated by any of a variety of factors, such as system events,user requests, status of the environment and the like. Next, in 508, anetwork environment may be defined. The network environment may includewhere the processes will run, for example servers, operating systems,databases, other networked components and the like.

Still referring to FIG. 5, and now to step 510, one or more levels ofautomated response and/or notification for each application componentmay be defined. Then, in 512, one or more scheduled tasks to performacross various components may be defined and, in step 514, support forSQL and any of a variety of other non-operating system tasks may bedefined. Following those steps, in 516, criteria and methodology ormethods for determining a level of success for the outcome of a givenaction may be defined, along with possible directions as to how toproceed based upon the outcome or level of success of the given action.Then, in 518, configurations for any number of sites that may supportdisaster recovery and geographic load balancing may be defined.

In a further exemplary embodiment of that discussed with respect to FIG.5, the methodology described may be able to support any available ordesired hardware platforms, operating systems, database managementsystem, other networked devices and the like. Additionally, themethodology may be able to provide such support transparently or withoutthe need to rely on outside components or factors.

In a still further exemplary embodiment of that shown in FIG. 5, amethod, system and apparatus for taking a consolidated configuration anddetermining the appropriate action or actions based upon systemic eventsor user requests may be described. This may include action taken basedupon events from monitoring of the various components of the environmentand/or user requests transmitted via a command line or any other type ofmethodology that may be available through a user interface. Exemplaryactions include, but are not limited to, starting individual processes,such as those for a specific server or an entire application; stoppingindividual processes, processes for a specific server or an entireapplication; stopping any or all dependent processes when a processstops, ceases function or crashes and restarting the stopped process aswell as any or all dependent processes; removing a machine forconfiguration and moving processes to one or more alternate servers;adding one or more servers and redistributing processes to utilize theone or more added servers; managing one or more processes betweendevices so as to facilitate high availability; determining the status ofany process or component in an environment; and implementing failover toand failback from separate sites, for example geographically separatesites, for disaster or any other type of recovery. The appliance may beable to, for example, assist in lessening the time needed to performtasks and run tests, allowing for greater ease in implementingscenarios, such as disaster recovery.

In yet another exemplary embodiment, a method and system for savingconfigurations, as described previously, may further have templates thatcan expedite further implementations of an application. The templatescan include any of a variety of information, such as processdefinitions, process dependencies, process sequences and process stepsthat may be consistent between implementations. Other information whichmay or may not be included in the templates includes implementationspecific data, for example specific servers. Also, templates may begenerated for any desired application. For example, templates may begenerated for custom applications that allow for the efficient supportof different instantiations, such as testing, developing anddemonstrating. Further, the use of templates can streamline animplementation of an application manager, which can allow for leadingpractices for commercially available packaged applications, such asPeopleSoft, Oracle and Siebel. Also, any implementation that has beendefined in the appliance may also be used as a template to generate orcreate additional implementations.

Still other exemplary embodiments include a method and system forinstallation and configuration of common packed applications. Thismethod and system may allow for the streamlining for the implementationof new environments, for example new environments based on a consistentbest practice framework. The method and system can include any of avariety of components, for example an underlying database, backups,restores, monitoring and routine administrative tasks including, but notlimited to, job scheduling, archiving of data and databasereorganizations. Implementations of this exemplary method and system mayallow for the reduction of reliance on technical staff, the leveragingof best practices driven by packaged application experts, the ensuringof consistency and repeatability and the simplification ofsupportability. Further, the exemplary method and system can allow forout-of-the-box support by the application manager, as discussed in otherexemplary embodiments.

The foregoing description and accompanying drawings illustrate theprinciples, preferred embodiments and modes of operation of theinvention. However, the invention should not be construed as beinglimited to the particular embodiments discussed above. Additionalvariations of the embodiments discussed above will be appreciated bythose skilled in the art.

Therefore, the above-described embodiments should be regarded asillustrative rather than restrictive. Accordingly, it should beappreciated that variations to those embodiments can be made by thoseskilled in the art without departing from the scope of the invention asdefined by the following claims.

What is claimed is:
 1. A method of managing computer processes,comprising: defining, by a computer, a plurality of computer processeson a plurality of networked computers in a computing environment;defining, by a computer, a sequence that dictates the starting andstopping of the plurality of computer processes on the plurality ofnetworked computers in the computing environment; defining, by acomputer, process dependencies and configuration rules for the pluralityof computer processes on the plurality of networked computers in thecomputing environment; defining, by a computer, at least one crossplatform management agent that communicates with and manages a group ofthe plurality of computer processes; executing the plurality ofprocesses on the plurality of networked computers; detecting a systemevent and communicating the event from the cross platform managementagent to an appliance; providing an automatically generated instructioncommunicated from the appliance to the cross platform management agentfor an action to take following the system event as determined by aninterpretation, by the appliance, of the process dependencies andconfiguration rules for the plurality of computer processes on theplurality of computers; executing the instruction.
 2. The method ofclaim 1, wherein the plurality of computer processes is hosted on atleast one server.
 3. The method of claim 1, wherein the plurality ofcomputer processes is hosted on at least two servers and each of the atleast two servers runs a distinct operating system.
 4. The method ofclaim 1, wherein the action to take following a system event is at leastone of starting a process, stopping a process, removing a server hostingat least one of the plurality of computer processes from the firstnetworked environment, moving at least one of the plurality of computerprocesses to a different server in the networked environment and addinga server to the networked environment to host at least one of theplurality of computer processes.
 5. The method of claim 1, furthercomprising: generating a template with the definitions of at least oneof the plurality of computer processes, the sequence that dictates thestarting and stopping of the plurality of computer processes, theprocess dependencies for the plurality of computer processes, the firstnetworked environment where the plurality of computer processes run andthe action to take following a system event.
 6. The method of claim 5,further comprising: utilizing the template in at least one separatenetworked environment.
 7. The method of claim 1, wherein the systemevent is at least one of a user action and at least one failure in thefirst networked environment.
 8. The method of claim 1, furthercomprising: switching from the first networked environment to a secondnetworked environment, the second networked environment havingsubstantially similar computer processes, sequence and processdependencies as the first networked computer environment.
 9. A systemfor managing computing processes, comprising: a networked computingenvironment; at least a first computer process server hosting aplurality of computer processes; at least a first set of configurationrules and process dependencies associated with the plurality of computerprocesses; at least one cross platform management agent thatcommunicates with and manages a group of the plurality of computerprocesses; and a management appliance communicatively coupled to thenetworked computing environment and the at least first computer processserver via the at least one cross platform management agent thatcontrols the running of the at plurality of computer processes on the atleast first computer process server and provides an automaticallygenerated instruction for an action to take following a system event asdetermined by an interpretation of the at least first set ofconfiguration rules and process dependencies of the at least theplurality of computers.
 10. The system of claim 9, wherein themanagement appliance is installed on one of the first computer processserver, a shared server or a remote server.
 11. The system of claim 9,wherein the management appliance further comprises an applicationmanagement agent that manages any computer process in the networkedcomputing environment and coordinates a response to one of a systemevent or user request.
 12. The system of claim 9, wherein theapplication management further comprises a user interface.
 13. Thesystem of claim 9, wherein the networked computing environment and anycomputer application or process running on the networked computingenvironment are customizable.
 14. The system of claim 9, wherein thenetworked computing environment and the at least first computer processserver are saved as one or more templates.
 15. The system of claim 14,wherein the one or more templates are used in different networkedcomputing environments.
 16. The system of claim 9, wherein themanagement appliance manages applications using at least one ofoperating system utilities, system calls, scripts, and network calls.17. The system of claim 9, wherein the management appliance provides thestatus of any computer process running in the networked computingenvironment.
 18. The system of claim 9, wherein the management appliancefacilitates maintenance of the networked computing environment.
 19. Thesystem of claim 9, wherein the management appliance facilitates thestarting, stopping or checking of the status of the at least onecomputer process.
 20. The system of claim 19, wherein the starting,stopping or checking of the status of the at least one computer processare performed by one or more of an operating system command, a systemcall, a network call and a script.
 21. A method of managing computerprocesses, comprising: defining a plurality of computer processes on aplurality of networked computers in a computing environment; defining asequence that dictates the starting and stopping of the plurality ofcomputer processes on the plurality of networked computers in thecomputing environment; defining process dependencies and configurationrules for the plurality of computer processes on the plurality ofnetworked computers in the computing environment; defining at least onecross platform management agent that communicates with and manages agroup of the plurality of computer processes; executing the plurality ofcomputer processes on the plurality of networked computers; detecting asystem event; communicating the system event from a cross platformmanagement agent to an appliance; providing an automated instructionfrom the appliance for an action to take following a unique system eventas determined by an interpretation of the process dependencies andconfiguration rules for the plurality of computers; communicating theinstruction from the appliance to the cross platform management agent;and executing the instruction; wherein the action to take includes aprocess to run as well as a location to run the process.